/*
 * Copyright (c) 2010, German Buela
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * The name of German Buela may not be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY GERMAN BUELA "AS IS" AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL GERMAN BUELA BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

package com.gbuela.winco.view

import org.eclipse.swt.custom._
import com.gbuela.swt._
import com.gbuela.winco.model._
import com.gbuela.winco.business._

class ArtistView(val tf:SwincoTabFolder, val art:Artist, val launcher:PlayerLauncher) extends TabView  with SwtHelper {
  val tabText = art.name
  val data = art
  
  val panels = art.albums map makePanel
  init
  
  def init: Unit = addContent { panels }
  
  private def makePanel(album: Album) =  horizontal.withRowData(400,90) (
      fill.withRowData(80,90) (
        image(album.imageInfo.thumbFilename).at(0,5).scaleTo(80,80).onClick(tf.openTab(album)).withTooltip("click to open album details")
      ),
      vertical (
        label((album.year getOrElse "").toString, 9) ,
        label(truncate(album.title), 14) ,
        label(album.artistName, 11),
        horizontal.withRowData(200,25) (
          image("./launch_s.gif").click("./launchpush_s.gif").at(0,0).scaleTo(20,20).onClick( launcher.launchPlaylist(album.tracks,album.location)).withTooltip("Play album"),
          image("./add_s.gif").click("./addpush_s.gif").at(24,0).scaleTo(20,20).onClick(tf.addTracksToCustomPlaylist(album.tracks,album.location)).withTooltip("Add album to custom playlist")
        )
      )
    )
  
  private def truncate(s:String):String =
  {
    if(s.length > 25)
      s.substring(0,25)
    else
        s
  }
}

